<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../style.css" type="text/css" media="screen">
<link rel="stylesheet" href="../../print.css" type="text/css" media="print">
<meta content="LayoutManager,mx.managers.LayoutManager,usePhasedInstantiation,getInstance,invalidateDisplayList,invalidateProperties,invalidateSize,isInvalid,validateClient,validateNow" name="keywords">
<title>mx.managers.LayoutManager</title>
</head>
<body>
<script type="text/javascript" language="javascript" src="../../asdoc.js"></script><script type="text/javascript" language="javascript" src="../../cookies.js"></script><script type="text/javascript" language="javascript">
<!--
				asdocTitle = 'LayoutManager - Zentrum virtUOS: virtPresenter';
				var baseRef = '../../';
				window.onload = configPage;
			--></script>
<table style="display:none" id="titleTable" cellspacing="0" cellpadding="0" class="titleTable">
<tr>
<td align="left" class="titleTableTitle">virtPresenter AsDoc</td><td align="right" class="titleTableTopNav"><a onclick="loadClassListFrame('../../all-classes.html')" href="../../package-summary.html">All&nbsp;Packages</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../all-classes.html')" href="../../class-summary.html">All&nbsp;Classes</a>&nbsp;|&nbsp;<a onclick="loadClassListFrame('../../index-list.html')" href="../../all-index-A.html">Index</a>&nbsp;|&nbsp;<a href="../../index.html?mx/managers/LayoutManager.html&amp;mx/managers/class-list.html" id="framesLink1">Frames</a><a onclick="parent.location=document.location" href="" style="display:none" id="noFramesLink1">No&nbsp;Frames</a></td><td rowspan="3" align="right" class="titleTableLogo"><img alt="Adobe Logo" title="Adobe Logo" class="logoImage" src="../../images/logo.jpg"></td>
</tr>
<tr class="titleTableRow2">
<td align="left" id="subTitle" class="titleTableSubTitle">Class&nbsp;LayoutManager</td><td align="right" id="subNav" class="titleTableSubNav"><a href="#propertySummary">Properties</a>&nbsp;| <a href="#methodSummary">Methods</a></td>
</tr>
<tr class="titleTableRow3">
<td colspan="2">&nbsp;</td>
</tr>
</table>
<script type="text/javascript" language="javascript">
<!--
if (!isEclipse() || window.name != ECLIPSE_FRAME_NAME) {titleBar_setSubTitle("Class LayoutManager"); titleBar_setSubNav(false,true,false,false,false,false,true,false,false,false,false,false,false,false);}
--></script>
<div class="MainContent">
<table cellspacing="0" cellpadding="0" class="classHeaderTable">
<tr>
<td class="classHeaderTableLabel">Package</td><td><a onclick="javascript:loadClassListFrame('class-list.html')" href="package-detail.html">mx.managers</a></td>
</tr>
<tr>
<td class="classHeaderTableLabel">Class</td><td class="classSignature">public class LayoutManager</td>
</tr>
<tr>
<td class="classHeaderTableLabel">Inheritance</td><td class="inheritanceList">LayoutManager <img class="inheritArrow" alt="Inheritance" title="Inheritance" src="../../images/inherit-arrow.gif"> flash.events.EventDispatcher</td>
</tr>
<tr>
<td class="classHeaderTableLabel">Implements</td><td><a href="ILayoutManager.html">ILayoutManager</a></td>
</tr>
</table>
<p></p>
  The LayoutManager is the engine behind
  Flex's measurement and layout strategy.
  Layout is performed in three phases; commit, measurement, and layout.
   <p>Each phase is distinct from the others and all UIComponents of
  one phase are processed prior to moving on to the next phase.
  During the processing of UIComponents in a phase, requests for
  UIComponents to get re-processed by some phase may occur.
  These requests are queued and are only processed
  during the next run of the phase.</p>
   <p>The <b>commit</b> phase begins with a call to
  <code>validateProperties()</code>, which walks through a list
  (reverse sorted by nesting level) of objects calling each object's
  <a href="../core/UIComponent.html#validateProperties()">
  <code>validateProperties()</code></a>method.</p>
   <p>The objects in the list are processed in reversed nesting order,
  with the <b>least</b> deeply nested object accessed first.
  This can also be referred to as top-down or outside-in ordering.</p>
   <p>This phase allows components whose contents depend on property
  settings to configure themselves prior to the measurement
  and the layout phases.
  For the sake of performance, sometimes a component's property setter
  method does not do all the work to update to the new property value.
  Instead, the property setter calls the <code>invalidateProperties()</code>
  method, deferring the work until this phase runs.
  This prevents unnecessary work if the property is set multiple times.</p>
   <p>The <b>measurement</b> phase begins with a call to
  <code>validateSize()</code>, which walks through a list
  (sorted by nesting level) of objects calling each object's
  <a href="../core/UIComponent.html#validateSize()"><code>validateSize()</code></a>
  method to determine if the object has changed in size.</p>
   <p>If an object's <a href="../core/UIComponent.html#invalidateSize()">
  <code>invalidateSize()</code></a> method was previously called,
  then the <code>validateSize()</code> method is called.
  If the size or position of the object was changed as a result of the
  <code>validateSize()</code> call, then the object's
  <a href="../core/UIComponent.html#invalidateDisplayList()">
  <code>invalidateDisplayList()</code></a> method is called, thus adding
  the object to the processing queue for the next run of the layout phase.
  Additionally, the object's parent is marked for both measurement
  and layout phases, by calling
  <a href="../core/UIComponent.html#invalidateSize()">
  <code>invalidateSize()</code></a> and
  <a href="../core/UIComponent.html#invalidateDisplayList()">
  <code>invalidateDisplayList()</code></a> respectively.</p>
   <p>The objects in the list are processed by nesting order,
  with the <b>most</b> deeply nested object accessed first.
  This can also be referred to as bottom-up inside-out ordering.</p>
   <p>The <b>layout</b> phase begins with a call to the 
  <code>validateDisplayList()</code> method, which walks through a list
  (reverse sorted by nesting level) of objects calling each object's
  <a href="../core/UIComponent.html#validateDisplayList()">
  <code>validateDisplayList()</code></a> method to request the object to size
  and position all components contained within it (i.e. its children).</p>
   <p>If an object's <a href="../core/UIComponent.html#invalidateDisplayList()">
  <code>invalidateDisplayList()</code></a> method was previously called,
  then <code>validateDisplayList()</code> method for the object is called.</p>
   <p>The objects in the list are processed in reversed nesting order,
  with the <b>least</b> deeply nested object accessed first.
  This can also be referred to as top-down or outside-in ordering.</p>
   <p>In general, components do not override the <code>validateProperties()</code>, 
  <code>validateSize()</code>, or <code>validateDisplayList()</code> methods.  
  In the case of UIComponents, most components override the 
  <code>commitProperties()</code>, <code>measure()</code>, or 
  <code>updateDisplayList()</code> methods, which are called
  by the <code>validateProperties()</code>, 
  <code>validateSize()</code>, or 
  <code>validateDisplayList()</code> methods, respectively.</p>
   <p>At application startup, a single instance of the LayoutManager is created
  and stored in the <code>UIComponent.layoutManager</code> property.  
  All components are expected to use that instance.  
  If you do not have access to the UIComponent object, 
  you can also access the LayoutManager using the static 
  <code>LayoutManager.getInstance()</code> method.</p>
 <p></p>
<br>
<hr>
</div>
<a name="propertySummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Public Properties</div>
<table id="summaryTableProperty" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Property</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol"><a class="signatureLink" href="#usePhasedInstantiation">usePhasedInstantiation</a> : Boolean<div class="summaryTableDescription">
   A flag that indicates whether the LayoutManager allows screen updates
   between phases.</div>
</td><td class="summaryTableOwnerCol">LayoutManager</td>
</tr>
</table>
</div>
<a name="methodSummary"></a>
<div class="summarySection">
<div class="summaryTableTitle">Public Methods</div>
<table id="summaryTableMethod" class="summaryTable " cellpadding="3" cellspacing="0">
<tr>
<th>&nbsp;</th><th colspan="2">Method</th><th class="summaryTableOwnerCol">Defined&nbsp;by</th>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#LayoutManager()">LayoutManager</a>()</div>
<div class="summaryTableDescription">
   Constructor.</div>
</td><td class="summaryTableOwnerCol">LayoutManager</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#getInstance()">getInstance</a>():<a href="../managers/LayoutManager.html">LayoutManager</a>
</div>
<div class="summaryTableDescription">[static]
   Returns the sole instance of this singleton class,
   creating it if it does not already exist.</div>
</td><td class="summaryTableOwnerCol">LayoutManager</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#invalidateDisplayList()">invalidateDisplayList</a>(obj:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a>):void</div>
<div class="summaryTableDescription">
   Called when a component changes in some way that its layout and/or visuals
   need to be changed.</div>
</td><td class="summaryTableOwnerCol">LayoutManager</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#invalidateProperties()">invalidateProperties</a>(obj:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a>):void</div>
<div class="summaryTableDescription">
   Adds an object to the list of components that want their 
   <code>validateProperties()</code> method called.</div>
</td><td class="summaryTableOwnerCol">LayoutManager</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#invalidateSize()">invalidateSize</a>(obj:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a>):void</div>
<div class="summaryTableDescription">
   Adds an object to the list of components that want their 
   <code>validateSize()</code> method called.</div>
</td><td class="summaryTableOwnerCol">LayoutManager</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#isInvalid()">isInvalid</a>():Boolean</div>
<div class="summaryTableDescription">
   Returns <code>true</code> if there are components that need validating;
   <code>false</code> if all components have been validated.</div>
</td><td class="summaryTableOwnerCol">LayoutManager</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#validateClient()">validateClient</a>(target:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a>, skipDisplayList:Boolean = false):void</div>
<div class="summaryTableDescription">
   When properties are changed, components generally do not apply those changes immediately.</div>
</td><td class="summaryTableOwnerCol">LayoutManager</td>
</tr>
<tr class="">
<td class="summaryTablePaddingCol">&nbsp;</td><td class="summaryTableInheritanceCol">&nbsp;</td><td class="summaryTableSignatureCol">
<div class="summarySignature">
<a class="signatureLink" href="#validateNow()">validateNow</a>():void</div>
<div class="summaryTableDescription">
   When properties are changed, components generally do not apply those changes immediately.</div>
</td><td class="summaryTableOwnerCol">LayoutManager</td>
</tr>
</table>
</div>
<script type="text/javascript" language="javascript">
<!--
showHideInherited();
--></script>
<div class="MainContent">
<a name="propertyDetail"></a>
<div class="detailSectionHeader">Property detail</div>
<a name="usePhasedInstantiation"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">usePhasedInstantiation</td><td class="detailHeaderType">property</td>
</tr>
</table>
<div class="detailBody">
<code>usePhasedInstantiation:Boolean</code>&nbsp;&nbsp;[read-write]<p>
   A flag that indicates whether the LayoutManager allows screen updates
   between phases.
   If <code>true</code>, measurement and layout are done in phases, one phase
   per screen update.
   All components have their <code>validateProperties()</code> 
   and <code>commitProperties()</code> methods 
   called until all their properties are validated.  
   The screen will then be updated.  
  
   </p><p>Then all components will have their <code>validateSize()</code> 
   and <code>measure()</code>
   methods called until all components have been measured, then the screen
   will be updated again.  </p>
     <p>Finally, all components will have their
   <code>validateDisplayList()</code> and 
   <code>updateDisplayList()</code> methods called until all components
   have been validated, and the screen will be updated again.  
   If in the validation of one phase, an earlier phase gets invalidated, 
   the LayoutManager starts over.  
   This is more efficient when large numbers of components
   are being created an initialized.  The framework is responsible for setting
   this property.</p>
     <p>If <code>false</code>, all three phases are completed before the screen is updated.</p>
  <span class="label">Implementation</span>
<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;public function get usePhasedInstantiation():Boolean</code>
<br>
<code>&nbsp;&nbsp;&nbsp;&nbsp;public function set usePhasedInstantiation(value:Boolean):void</code>
<br>
</div>
<a name="constructorDetail"></a>
<div class="detailSectionHeader">Constructor detail</div>
<a name="LayoutManager()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">LayoutManager</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">constructor</td>
</tr>
</table>
<div class="detailBody">
<code>public function LayoutManager()</code><p>
   Constructor.
  </p></div>
<a name="methodDetail"></a>
<div class="detailSectionHeader">Method detail</div>
<a name="getInstance()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">getInstance</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td>
</tr>
</table>
<div class="detailBody">
<code>public static function getInstance():<a href="../managers/LayoutManager.html">LayoutManager</a></code><p>
   Returns the sole instance of this singleton class,
   creating it if it does not already exist.
     </p><p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code><a href="../managers/LayoutManager.html">LayoutManager</a></code></td>
</tr>
</table>
</div>
<a name="invalidateDisplayList()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">invalidateDisplayList</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function invalidateDisplayList(obj:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a>):void</code><p>
   Called when a component changes in some way that its layout and/or visuals
   need to be changed.
   In that case, it is necessary to run the component's layout algorithm,
   even if the component's size hasn't changed.  For example, when a new child component
   is added, or a style property changes or the component has been given
   a new size by its parent.
     </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">obj</span>:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a></code> &mdash; The object that changed.
  </td>
</tr>
</table>
</div>
<a name="invalidateProperties()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">invalidateProperties</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function invalidateProperties(obj:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a>):void</code><p>
   Adds an object to the list of components that want their 
   <code>validateProperties()</code> method called.
   A component should call this method when a property changes.  
   Typically, a property setter method
   stores a the new value in a temporary variable and calls 
   the <code>invalidateProperties()</code> method 
   so that its <code>validateProperties()</code> 
   and <code>commitProperties()</code> methods are called
   later, when the new value will actually be applied to the component and/or
   its children.  The advantage of this strategy is that often, more than one
   property is changed at a time and the properties may interact with each
   other, or repeat some code as they are applied, or need to be applied in
   a specific order.  This strategy allows the most efficient method of
   applying new property values.
     </p><span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">obj</span>:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a></code> &mdash; The object whose property changed.
  </td>
</tr>
</table>
</div>
<a name="invalidateSize()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">invalidateSize</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function invalidateSize(obj:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a>):void</code><p>
   Adds an object to the list of components that want their 
   <code>validateSize()</code> method called.
   Called when an object's size changes.
     </p><p>An object's size can change for two reasons:</p>
     <ol>
     <li>The content of the object changes. For example, the size of a
     button changes when its <code>label</code> is changed.</li>
     <li>A script explicitly changes one of the following properties:
     <code>minWidth</code>, <code>minHeight</code>,
     <code>explicitWidth</code>, <code>explicitHeight</code>,
     <code>maxWidth</code>, or <code>maxHeight</code>.</li>
   </ol>
     <p>When the first condition occurs, it's necessary to recalculate
   the measurements for the object.
   When the second occurs, it's not necessary to recalculate the
   measurements because the new size of the object is known.
   However, it's necessary to remeasure and relayout the object's
   parent.</p>
     <span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">obj</span>:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a></code> &mdash; The object whose size changed.
  </td>
</tr>
</table>
</div>
<a name="isInvalid()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">isInvalid</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function isInvalid():Boolean</code><p>
   Returns <code>true</code> if there are components that need validating;
   <code>false</code> if all components have been validated.
  </p><p></p>
<span class="label">Returns</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20"></td><td><code>Boolean</code></td>
</tr>
</table>
</div>
<a name="validateClient()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">validateClient</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function validateClient(target:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a>, skipDisplayList:Boolean = false):void</code><p>
   When properties are changed, components generally do not apply those changes immediately.
   Instead the components usually call one of the LayoutManager's invalidate methods and
   apply the properties at a later time.  The actual property you set can be read back
   immediately, but if the property affects other properties in the component or its
   children or parents, those other properties may not be immediately updated.  
     </p><p>To guarantee that the values are updated, 
   you can call the <code>validateClient()</code> method.  
   It updates all properties in all components whose nest level is greater than or equal
   to the target component before returning.  
   Call this method only when necessary as it is a computationally intensive call.</p>
     <span class="label">Parameters</span>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="20px"></td><td><code><span class="label">target</span>:<a href="ILayoutManagerClient.html">ILayoutManagerClient</a></code> &mdash; The component passed in is used to test which components
   should be validated.  All components contained by this component will have their
   <code>validateProperties()</code>, <code>commitProperties()</code>, 
   <code>validateSize()</code>, <code>measure()</code>, 
   <code>validateDisplayList()</code>, 
   and <code>updateDisplayList()</code> methods called.
    </td>
</tr>
<tr>
<td class="paramSpacer">&nbsp;</td>
</tr>
<tr>
<td width="20px"></td><td><code><span class="label">skipDisplayList</span>:Boolean</code> (default = <code>false</code>)<code></code> &mdash; If <code>true</code>, 
   does not call the <code>validateDisplayList()</code> 
   and <code>updateDisplayList()</code> methods.
  </td>
</tr>
</table>
</div>
<a name="validateNow()"></a>
<table cellspacing="0" cellpadding="0" class="detailHeader">
<tr>
<td class="detailHeaderName">validateNow</td><td class="detailHeaderParens">()</td><td class="detailHeaderType">method</td><td class="detailHeaderRule">&nbsp;</td>
</tr>
</table>
<div class="detailBody">
<code>public function validateNow():void</code><p>
   When properties are changed, components generally do not apply those changes immediately.
   Instead the components usually call one of the LayoutManager's invalidate methods and
   apply the properties at a later time.  The actual property you set can be read back
   immediately, but if the property affects other properties in the component or its
   children or parents, those other properties may not be immediately updated.  To
   guarantee that the values are updated, you can call the <code>validateNow()</code> method.  
   It updates all properties in all components before returning.  
   Call this method only when necessary as it is a computationally intensive call.
  </p></div>
<br>
<br>
<hr>
<br>
<p></p>
<center class="copyright"> 
</center>
</div>
</body>
</html>
<!-- -->
